Csit.Delta.ClientUtil.D8VqtTable
Строка определения столбца в D8VqtTable¶
Синтаксис строки описания столбца¶
Описание столбца задается строкой следующего вида (необязательные элементы указаны в высоких скобках).
┌ ┐ │ ┌ ┐┌ ┐┌ ┐│ ┌ ┐┌ ┐│ │ ││┌ ┐││ ┌ ┐││ │-││DataAlias││.│Property│││PropertyIndex[?]│││:│FormatSpec│││ └ ┘└ ┘│ │ ││└ ┘││ └ ┘││ │ └ ┘└ ┘└ ┘│ └ ┘
Хотя бы один из элементов DataAlias
и Property
должен быть указан.
Специальные варианты для задания пустого столбца: "null
" или ".
"
Минус
в начале означает, что столбец будет создан невидимым.
DataAlias
- идентификатор массива данных в таблице. Он задается в процессе добавления данных (не столбцов, а данных) в таблицу.Этот идентификатор не нужно указывать для некоторых значений элемента
Poperty
(например, ".RowNumber
" или ".Empty
").Кроме того существуют специальные предопределенные идентификаторы:
T
- для таблицы, сгруппированной по времени, означает массив данных, содержащий моменты времени, по которым сгруппированы данные (например "T.LocalMoment
").P
- для таблицы, сгруппированной по параметру Дельта, означает массив данных, содержащий параметры Дельта, по которым сгруппированы данные (например, "P.ShortName
").R
- означает массив данных, содержащий номера строк в таблице.
Poperty
- название свойства данных. Это может быть название свойства описания параметра D8, название свойства значения параметра или другое свойства.
Если свойство не задано, то значением ячейки будет структура со значением параметра (ID8Vqt
) или класс с описанием параметра (ID8ParamInfo
).
PropertyIndex
- опциональный индекс (число или строка без кавычек) внутри значения свойства данных. Индекс может быть указан для свойства Value
, т.е. для значения параметра.
Для значения векторных параметров индекс должен быть числовым и означает индекс (от нуля) внутри массива, который представляет собой векторное значение. Например:
X.Value[0]:0.### X.Value[5?]
Для значений табличных параметров индекс может быть как числовым (тогда это индекс поля в списке полей значения мета-типа) так и строковым (тогда это название поля мета-типа). Например:
X.Value[power] X.Value[deleteDate?]:dd.MM.yy
После индекса может быть указан знак вопроса
. Если он указан, то в случае если указанный индекс ссылается на объект, которого не существует (например, числовой индекс больше, чем количество элементов массиве или строковый индекс не соответствует ни одного из полей в записи), то значение ячейки таблицы будет null
(пустое значение, а не строка "null").
FormatSpec
задает строку форматирования значения объекта, заданного предшествующими элементами (DataAlias
, Poperty
, PropertyIndex
), в текст. Строка форматирования указывается через двоеточие
.
Если указано только двоеточие, то будет использовано форматирование по умолчанию. Если же не указано ни двоеточия ни строки форматирования, то значением ячейки таблицы будет сам объект (т.е. без форматирования его в текст).
Если Property
указано, то для форматирования объекта в текст используется стандартное форматирование VQT (см. "Форматирование VQT в D8ParamValueFormatter").
Если Poperty
не указано, то для форматирования используется стандартное форматирование .NET.
В этом случае синтаксис строки форматирования определяется самим форматируемым объектом (в коде будет вызван метод IFormattable.Format(FormatSpec)
). Например:
X.Timestamp:hh.mm dd.MM.yyyy
Если нужно внести в строку форматирования элементы, не поддерживаемые синтаксисом объекта, или объект нужно вывести в текст несколько раз, то нужно заключить сам объект в строке форматирования в фигурные скобки:
{0:format}
. Например:X.Timestamp:TIME={0:hh:mm} DATE={0:dd.MM.yy}
Строка форматирования может быть дополнена указанием культуры (<LC:cultureString>
) и часового пояса (<TZ:timezoneString>
). Часовой пояс можно указывать только для данных типа даты/времени.
Варианты задания Property
¶
Перечень во многом совпадает с названиями токенов строки форматирования в D8ParamValueFormatter
.
Перечень определен в перечислении D8VqtTableDefProperty
.
Свойства для полей данных (ID8Vqt
)¶
UtcTimestamp
- метка времени в UTC (DateTime
)UtcTimestampOA
- метка времени в UTC, приведенная к формату времени OLE (double
)LocalTimestamp
- метка времени в часовом поясе сессии (DateTime
)LocalTimestampOA
- метка времени в часовом поясе сессии, приведенная к формату времени OLE (double
)UtcMoment
- запрошенный момент времени в UTC (DateTime
)UtcMomentOA
- запрошенный момент времени в UTC, приведенный к формату времени OLE (double
)LocalMoment
- запрошенный момент времени в часовом поясе сессии (DateTime
)LocalMomentOA
- запрошенный момент времени в часовом поясе сессии, приведенный к формату времени OLE (double
)Value
- значение параметра D8 (тип объекта зависит от типа параметра), может быть дополнено индексом[PropertyIndex]
ValueXls
- то же, что иValue
, но для xls-отчета может быть использовано автоформатирование чисел в ячейкиFormattedValue
- значение параметра D8, отформатированное в строку внутренними средствами инстансаFormattedValueAndUnits
- значение параметра D8 и единицы измерения, отформатированные в строку внутренними средствами инстансаState
- состояние (D8ParamValueState
)StateNumber
- состояние (uint
)XState
- расширенное состояние (int
)Quality
- качество значения (float
)
Свойства для полей НСИ (ID8ParamInfo
и ID8ParamInfoBase
)¶
LocalId
- локальный илентификатор (int
)InstanceId
- тдентификатор подсистемы (short
)GlobalId
- глобальный идентификатор (long
)SID
- строковый идентификаторParamType
- тип параметра (D8ParamType
)Subtype
- подтип параметра (D8ParamSubtype
)Name
- имяShortName
- краткое имяAdditionalName
- дополнительное имяAKS
- кодInterval
- интервал значений (D8TimeInterval
)Step
- шаг значений (D8TimeStep
)Options
- флаги параметра (D8ParamOptions
)Units
- единицы измеренияAggregatedUnits
- единицы измерения после агрегированияAggregationCoef
- коэффициент агрегированияScaleName
- название шкалыMin
- минимум шкалы (double
)Max
- максиму шкалы (double
)ValidLow
- низ достоверности (double
)ValidHigh
- верх достоверности (double
)RangeUp1
- первая уставка вверх (double
)RangeUp2
- вторая уставка вверх (double
)RangeDown1
- первая уставка вниз (double
)RangeDown2
- вторая уставка вниз (double
)DeltaSave
- апертура архивирования (double
)DeltaSend
- апертура пересылки (double
)DeviceName
- название прибораDeviceId
- идентификатор прибора (int
)GroupName
- название группыGroupId
- идентификатор группы (int
)
Специальные свойства¶
Для этих свойств DataAlias
не указывается.
Empty
- пустой столбец (null
)RowNumber
- номер строки от единицы (int
)
Символы подстановки¶
Чтобы добавить несколько столбцов за одну операцию можно использовать стандартные символы подстановки wildcards
(символы *
и ?
) в элементе DataAlias
. Например,
CHTEC?_ASKUT*.Value:0.### G1_*.LocalTimestamp
Строка определения столбцов тогда принимает вид:
┌ ┐ ┌ ┐ │-│DataAliasMask│.DataItemSpec│ └ ┘ └ ┘
Если используются wildcards
, то будет выполнен поиск всех массивов данных таблицы, у которых идентификатор подходит под маску, заданную в DataAliasMask
с использованием символов подстановки. Столбец будет создан для каждого найденного массива данных с идентификатором DataAliasN
и с использованием строки определения "DataAliasN
.DataItemSpec".
В результаты поиска по маске не включаются специальные массивы данных (такие как массив данных для описания параметров или для хранения сгруппированных меток времени).
Дополнительно к маске DataAliasMask
можно вместо одного DataItemSpec
указать несколько вариантов через запятую:
┌ ┐ ┌ ┐┌ ┐ │-│DataAliasMask│.DataItemSpec1││,.DataItemSpec2│... └ ┘ └ ┘└ ┘
Например с помощью строки определения
TEST_*.Value:0.###,.State
будут созданы столбцы
TEST_1.Value:0.### TEST_1.State TEST_2.Value:0.### TEST_2.State TEST_3.Value:0.### TEST_3.State
И кроме того в DataItemSpec
можно указать Value[*]
. Это будет означать, что нужно сгенерировать по столбцу на каждое поле внутри значения параметра. Набор полей будет получен из мета-типа параметра. Это полезно для табличных параметров. Например, для табличного параметра с полями width
, height
и depth
) строка определения
TBL_56.Value[*]:,.UtcTimestamp
будет развернута в
TBL_56.Value[width]: TBL_56.Value[height]: TBL_56.Value[depth]: TBL_56.UtcTimestamp
Для не-табличных параметров Value[*]
будет заменен на Value
.
Особенности¶
Идентификатор массива данных DataAlias
должен быть указан явно в момент добавления данных в таблицу. Дополнительно, если массив данных содержит информацию о параметре D8, в качестве DataAlias
можно использовать SID
параметра, в котором все точки заменены на подчеркивания.